class intArray_t {
public:
	// intArray_t();
	// intArray_t(const intArray_t& arr2);
	// ~intArray_t();
	// const Person& operator=(const intArray_t& arr2);

	intArray_t(); // Default Constructor
	intArray_t(const int initialSize);
	~intArray_t();

	int getNumberOfElements() const;
	int getExpandValue() const;
	int getCapacity() const;

	int* getFirstElement() const;
	int* getLastElement() const;
	int* find(int val) const;

	int* remove(int val);
	void removeAll();
	void removeDelete(int val);
	void removeDeleteAll();

	void insert(int* const newElem);
	int append(int index, int* const newElem);
	int prepend(int index, int* const newElem);

	void printAll();
	bool isEmpty();

private:
	int** arr;
	int numElements;
	const int expandValue;
	int capacity;

	intArray_t(const intArray_t& arr); // Don't allow copy of object
	const intArray_t& operator=(const intArray_t& arr2); // Don't allow copy of object
	
	int findIndex(int val, int startFrom) const;
	void removeIndex(int fIndex);

	void expandArray();

	void zeroArray();
};
